System and method of automatically sizing and adapting a widget to available space

ABSTRACT

A smart-sizing, browser-based widget uses both information defined by a user (e.g., a width value, etc.) and information provided by the web browser and web page within which it is being displayed, to calculate, in real-time, which of its elements to display, and at what scale, so as to make the most efficient use of its available space. The determination as to which elements to display may be a function of a pre-defined relationship among the elements.

BACKGROUND

1. Field of the Invention

Aspects of the present invention relate generally to web-based widgets, and more specifically to widgets that can automatically resize and adapt, in real-time, to the space they are given.

2. Description of Related Art

As is known in the art, web-based widgets (also known as gadgets, badges, modules, etc.) enable end users to embed various third-party functionality into web pages. Widgets may be used to display a wide variety of information. Examples include the weather forecast for a particular city, or the current stock price of a certain company, news in a particular geographical area, news related to a particular topic, games, and the like. The inclusion of a widget in a web page can be accomplished through JavaScript™, an EMBED element, an embedded Flash® object, or any of a host of other methods which bring the widget code into the web page, where the widget runs locally within a user's browser. While the widget code can consist entirely of Hypertext Markup Language (HTML), widgets are more commonly developed either in JavaScript™ or Adobe® Flash®.

Traditionally, third-parties have offered widgets either in a single size or in a small number of varying sizes, sometimes with varying levels of functionality. For example, Yahoo!™ Finance offers a customizable widget for displaying financial information, which can include quotes, charts, and news, in any combination as decided by the user. After choosing which of the three types of information he wants the widget to display, the user must then specify various other elements, such as the number of news headlines to display, which stock symbols to follow, and finally the width [and sometimes height] of the module.

Even though multiple sizes are offered, their limited number cannot account for all web-page sizing variations; not only do web pages come in a wide number of styles and designs, but an end user ultimately has control, to a greater or lesser relative extent, over the monitor size and the web browser dimensions; if the web page is designed using mostly relative constraints, then the size of the web page can vary widely depending on monitor size, browser-window size, etc. Additionally, changing the size of a widget is often a frustrating experience for an end user who usually must repeat the entire settings-choosing process, including placing the widget code on the web page.

Thus, it would be desirable to use a widget that can size itself automatically relative to the dimensions within which it is being presented.

SUMMARY

In light of the foregoing, it is a general object of the present invention to automatically size a web-based widget relative to its real-time constraints to make optimal and efficient use of available space.

BRIEF DESCRIPTION OF THE DRAWING FIGURES

FIGS. 1A and 1B illustrate a fixed-size widget.

FIGS. 2A-2C illustrate an exemplary embodiment of the present invention.

FIG. 3 is a logical flowchart of the general process by which widgets are automatically sized.

FIG. 4 is a simplified block diagram illustrating how the invention may be employed in accordance with the detailed description.

DETAILED DESCRIPTION

Detailed descriptions of one or more embodiments of the invention follow, examples of which may be graphically illustrated in the drawings. Each example and embodiment is provided by way of explanation of the invention, and is not meant as a limitation of the invention. For example, features described as part of one embodiment may be utilized with another embodiment to yield still a further embodiment. It is intended that the present invention include these and other modifications and variations.

Aspects of the present invention are described below in the context of automatically sizing web-based widgets to make optimal and efficient use of their bounded space.

FIG. 1 illustrates conventional fixed-size widgets. As generally understood in the art, web page 100 is a web page as it might be rendered in a web browser. Sections 105, 110, and 115 are the different sections of the page as defined by Hypertext Modeling Language (HTML) and/or Cascading Style Sheets (CSS), which are generally used to describe the presentation of a document written in a markup language (e.g., HTML, etc.). Widget 120 is any widget embedded in a web page (e.g., one that displays weather information, stocks, etc.). Within Widget 120 are various elements 125, 130, and 135, which display information, control some aspect of the widget, etc.; obviously there can be any number of elements in a widget. As discussed above, widgets generally come in only one size, and even when multiple sizes are offered they are generally not scalable or changeable beyond the various sizes given.

In light of the immutable nature of current widgets, it is often the case that they do not or cannot fit into an already-established web page layout. As a result, the web pages can look different from what the designer intends. For example, as shown in FIG. 1A, widget 120 is too large and cannot fit within section 110 where the designer would like it to go. Because the widget does not fit, it overflows out of section 110 and into section 115. It will be understood by those of skill in the art that the “error” may be worse than just the widget overflowing out of its section; depending on the widget, the HTML and/or CSS, and the web browser used to view the web page, errors may include section 115 being pushed down and out of view, widget 120 not appearing at all, section 115 being resized to fit widget 120, etc.

Similarly, as shown in FIG. 1B, widget 120 may take up more space than the user would like. For example, in FIG. 1B, widget 120 is offered in only a single size that takes up more than half of section 115. Moreover, if the web page is built in such a way as to scale with the size of the browser window, the widget 120 takes up an increasing amount of space as the size of the window, and subsequently the size of the web page, decreases. If the designer is intent on having this particular widget on his web page, he may have to redesign the web page to accommodate it.

FIG. 2 illustrates various embodiments of a smart-sizing widget. The widgets shown in FIGS. 2A, 2B, and 2C are all the same widget 200; each web page 100 using widget 200 utilizes the same widget code, which allows widget 200 to resize itself automatically relative to where it is being placed. As shown in FIG. 2A, widget 200 includes elements 205, 210, and 215. It will be appreciated by those of skill in the art that widgets can comprise any number of elements, depending on the information the widgets are meant to convey and the interactivity they are meant to provide.

For example, widget 200 may be a music player, in which case element 205 may be playback controls (e.g., play, pause, forward, back, etc.), element 210 may be a volume control, and element 215 may be a list of available songs. As shown in FIGS. 2A and 2B, all three elements are available to the user, but in FIG. 2C, only elements 205 and 215 are available; widget 200 determines, based on its available space—note that the size of the web page and its constituent sections vary as between FIGS. 2A, 2B, and 2C—the elements it should display and at what size.

The decision as to what to display is pre-determined, to some extent, by the designer of the widget, who may define a functional relationship between the widget elements so as to give the elements an order of importance (e.g., element one should always be displayed, element two should be displayed as long as element one still fits, etc.). In one embodiment, the designer may structure the functional relationship as a hierarchy; in such a case, the widget may reference that hierarchy to determine which elements to display. For example, if elements 205 and 215 are at the top of the element hierarchy and widget 200 determines that there is only enough room for two of the three available elements, then only elements 205 and 215 will be displayed (as shown in FIG. 2C), because they take precedence over element 210. In another embodiment, the widget elements may be able to scale their sizes, either relative to each other or relative to the dimensions in which the widget may reside (or some combination thereof). For example, all three elements of FIG. 2A may be able to fit comfortably into a 300×400 pixel space as well as a 200×300 pixel space if each of the elements resizes itself to make the best use of the available space. To this end, the hierarchical rules governing the position of the various elements may include rules specifying how much a given element may be resized. These sizing rules may be specified in various ways, such as, for example, as an amount relative to the other elements, as a function of the overall width of the widget, etc.

In one embodiment, the decision regarding which widget elements to display is a function of structural data related to the user's web browser and the web page within which the widget resides, such as, for example, the resolution of the user's monitor, the dimensions of the user's browser window, markup and associated data (as described more fully below), etc. This may be especially useful where the widget is the only thing displayed on a web page (i.e., where there is no HTML and/or CSS defining a layout). As the browser window is resized by the user, the widget will determine, in real-time, the widget elements to be displayed. If there is enough room for all of the elements, then all of the elements will be displayed. However, as the browser window is made smaller, and all of the widget elements can no longer fit, the widget will resize itself to fit as best it can within the browser window using the methods described above.

Similarly, the decision regarding which widget elements to display may be informed in part by the HTML and/or CSS that defines the web page on which the widget is used. For example, if the space within which the widget is to go is structured by a CSS “div” element, defined by some width, then the widget may be “built” and sized so as to fit within those constraints. Comparatively, if the widget is to reside within an HTML “table” element, it can resize itself to accommodate its given space by taking into account the dimensions of the table.

In another embodiment, the widget may accept dimensional values as set by the user, which can inform the decision regarding which widget elements to display. Dimensional values can be either relative or absolute. Relative dimensional values can be described as a ratio between the width and/or height of the widget and some other entity. For example, if a user specifies that the width of widget 200 should be 50%, then, after web page 100 has been drawn, and widget 200 knows within what dimensions it has to work, it halves the available width (i.e., 50%) and sizes widget elements 205, 210, and 215 as best it can. If the dimensional values given by the user are set absolutely, then widget 200 will size widget elements 205, 210, 215 to fit within the absolute dimensions and will essentially ignore any other structural information provided by the underlying HTML, CSS, browser, etc. For example, referring again to FIGS. 2A-2C, web page 100 may have a header section 105, a menu section 110, and a main content section 115. Within this layout, the user may wish to display widget 200 inside menu section 110, which has been defined, for example, as always being 400 pixels wide. In this case, if the user wants to take full advantage of the available width, he may specify the width of widget 200 as, for example, 398 pixels; widget 200 then determines how best to fit the widget elements into that space and maintains the determined layout until the user changes its dimensional values.

In yet another embodiment, the decision regarding what elements to display and at what size, etc., may be informed by contextual data received by the widget (e.g., the data's volume, type, structure, etc.). For example, if the smart-sizing widget is a music player that receives song information from disparate sources (e.g., screen-scraped HTML, Atom, etc.), one source may supply comments along with the song while another may not. In such a case, the smart-sizing widget may deduce from the received song information that a comment is to be displayed for a particular song, along with the other song information (e.g., title, author, etc.); the contextual data may thus allow for more granular and dynamic control over the information to be displayed within the various widget elements.

FIG. 3 is a logical flowchart of the general process by which widgets are automatically sized and resized according to one embodiment of the invention. As illustrated at block 300, the widget may accept dimensional values, as discussed above (either as absolute or relative values). The dimensional values may be specified in a number of different ways, such as, for example, as arguments to the function that embeds the widget within the web page, etc. At block 305, the widget may accept structural data from the web browser, and at block 310 may determine the total space available to the widget, defined, for example, through width and height values. Once the widget has this information, it can then determine, at block 315, the size of the widget, the size of the widget elements, and which widget elements will be displayed, as a function of some combination of the dimensional values as inputted by the user and the structural data received from the web browser. After the layout of the widget has been determined, the widget is displayed on the web page at block 320. During its display, if the user resizes the browser window at block 325, the widget can update its size and element structure in real-time, so as to constantly make the most efficient use of its space, even as that space fluctuates.

The sequence and numbering of blocks depicted in FIG. 3 is not intended to imply an order of operations to the exclusion of other possibilities. Those of skill in the art will appreciate that the foregoing systems and methods are susceptible of various modifications and alterations. For example, the widget may not allow the user to input dimensional values, and so block 300 would not be needed. As another example, the widget may not adapt and resize in real-time to the resizing of the browser window, in which case the displaying of the widget at block 320 would persist until the user closed the browser window, refreshed the web page, etc.

FIG. 4 is a simplified block diagram illustrating how the invention may be employed. Similar to other web-based widgets, a smart-sizing widget may be embedded in a web page (as discussed herein) where it may be accessed by user 405 through a web browser; the widget may receive, over a network 400 (e.g., the Internet), and from Server 410, the information it is to display (e.g., stock quotes, weather information, etc.).

Several features and aspects of the present invention have been illustrated and described in detail with reference to particular embodiments by way of example only, and not by way of limitation. Those of skill in the art will appreciate that alternative implementations and various modifications to the disclosed embodiments are within the scope and contemplation of the present disclosure. Therefore, it is intended that the invention be considered as limited only by the scope of the appended claims. 

1. A method of displaying a widget, comprising a plurality of widget elements, in a web page, said method comprising: accepting dimensional values associated with the widget; accepting structural data associated with the web page; calculating an available region within the web page based on the structural data; determining which of the plurality of widget elements to display, and at what scale; and displaying the widget according to said determination and within the available region.
 2. The method of claim 1 wherein the dimensional values comprise values selected from the group consisting of a width value and a height value.
 3. The method of claim 1 wherein the dimensional values are relative to the available region.
 4. The method of claim 3 wherein the relative dimensional values are defined as a percentage.
 5. The method of claim 1 wherein the dimensional values are absolute.
 6. The method of claim 5 wherein the absolute dimensional values are defined in terms of a number of pixels.
 7. The method of claim 1 wherein the structural data associated with the web page describes a layout of the web page.
 8. The method of claim 7 wherein the structural data further comprises dimensional data associated with a web browser within which the web page is displayed.
 9. The method of claim 1 wherein the available region within the web page is defined by a height and a width.
 10. The method of claim 1 wherein the determining further comprises sizing the widget based on a functional relationship among the plurality of widget elements.
 11. The method of claim 10 wherein the functional relationship among the plurality of widget elements comprises a hierarchy that ascribes to each of the plurality of widget elements a level of importance.
 12. The method of claim 1 wherein said determining further comprises analyzing contextual data associated with the widget.
 13. A computer-readable medium encoded with a computer-executable program to perform a method of displaying a widget, comprising a plurality of widget elements, in a web page, said method comprising: accepting dimensional values associated with the widget; accepting structural data associated with the web page; calculating an available region within the web page based on the structural data; and determining which of the plurality of widget elements to display, and at what scale; and displaying the widget according to said determination.
 14. The computer-readable medium of claim 13 wherein the dimensional values comprise values selected from the group consisting of a width value and a height value.
 15. The computer-readable medium of claim 13 wherein the dimensional values are relative to the available region.
 16. The computer-readable medium of claim 15 wherein the relative dimensional values are defined as a percentage.
 17. The computer-readable medium of claim 13 wherein the dimensional values are absolute.
 18. The computer-readable medium of claim 17 wherein the absolute dimensional values are defined in terms of a number of pixels.
 19. The computer-readable medium of claim 13 wherein the structural data associated with the web page describes a layout of the web page.
 20. The computer-readable medium of claim 19 wherein the structural data further comprises dimensional data associated with a web browser within which the web page is displayed.
 21. The computer-readable medium of claim 13 wherein the available region within the web page is defined by a height and a width.
 22. The computer-readable medium of claim 13 wherein the determining further comprises sizing the widget based on a functional relationship among the plurality of widget elements.
 23. The computer-readable medium of claim 22 wherein the functional relationship among the plurality of widget elements comprises a hierarchy that ascribes to each of the plurality of widget elements a level of importance.
 24. The computer-readable medium of claim 13 wherein said determining further comprises analyzing contextual data associated with the widget. 